package com.zqsign.common.core.logging;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alibaba.fastjson.JSON;

/**
 * @ClassName: ZqInterceptorLogger 
 * @Description（类信息描述）: 拦截器日志类
 *
 * @Company: zqsign
 * @date 2017年10月26日 下午4:57:31
 */
public class ZqInterceptorLogger{

	//全局常量
	public static final String INTERCEPTOR_INFO = ",层：interceptor";
	//创建静态日志对象
	private Logger logger;
	
	//私有构造器
	protected ZqInterceptorLogger(){}
	//有参构造
	protected ZqInterceptorLogger(Class clazz){
		logger = LoggerFactory.getLogger(clazz);
	}
	protected ZqInterceptorLogger(String s){
		logger = LoggerFactory.getLogger(s);
	}
	
	/*------------------------- debug -------------------------*/	
	/**
	 * @Title: debug
	 * @Description : debug
	 * @date 2017年11月8日下午5:04:36
	 * @param request ：HttpServletRequest
	 * @param msg ：日志信息
	 */
	public void debug(String id,HttpServletRequest request,String msg){
		logger.debug("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息：{}", msg);
	}
	/**
	 * @Title: debug
	 * @Description : debug
	 * @date 2017年11月8日下午5:05:43
	 * @param request ：HttpServletRequest
	 * @param obj ：日志信息对象
	 */
	public void debug(String id,HttpServletRequest request,Object obj){
		logger.debug("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息：{}", JSON.toJSONString(obj));
	}
	/**
	 * @Title: debug
	 * @Description : debug
	 * @date 2017年11月8日下午5:06:27
	 * @param request ：HttpServletRequest
	 * @param msg ：日志信息
	 * @param t ：错误信息
	 */
	public void debug(String id,HttpServletRequest request,String msg,Throwable t){
		logger.debug("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息：{},异常信息：{}", msg, t);
	}
	/**
	 * @Title: debug
	 * @Description : debug
	 * @date 2017年11月8日下午5:07:00
	 * @param request ：HttpServletRequest
	 * @param format ：自定义格式：xxx{}
	 * @param o ：自定义打印信息
	 */
	public void debug(String id,HttpServletRequest request,String format,Object obj){
		logger.debug("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息："+format, obj);
	}
	/**
	 * @Title: debug
	 * @Description : debug
	 * @date 2017年11月8日下午5:07:34
	 * @param request ：HttpServletRequest
	 * @param format ：自定义格式多个：xxx{},xxx{}……
	 * @param args ：自定义打印信息多个
	 */
	public void debug(String id,HttpServletRequest request,String format,Object... args){
		logger.debug("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息："+format, args);
	}
	
	/*------------------------- info -------------------------*/
	/**
	 * @Title: info
	 * @Description : info
	 * @date 2017年11月8日下午5:08:20
	 * @param request ：HttpServletRequest
	 * @param msg ：日志信息
	 */
	public void info(String id,HttpServletRequest request,String msg){
		logger.info("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息：{}",  msg);
	}
	/**
	 * @Title: info
	 * @Description : info
	 * @date 2017年11月8日下午5:08:50
	 * @param request ：HttpServletRequest
	 * @param obj ：日志信息对象
	 */
	public void info(String id,HttpServletRequest request, Object obj) {
		logger.info("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息：{}", JSON.toJSONString(obj));
	}
	/**
	 * @Title: info
	 * @Description : info 
	 * @date 2017年11月8日下午5:09:21
	 * @param request ：HttpServletRequest
	 * @param msg ：日志信息
	 * @param t ：错误信息
	 */
	public void info(String id,HttpServletRequest request,String msg,Throwable t){
		logger.info("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息：{},异常信息：{}", msg, t);
	}
	/**
	 * @Title: info
	 * @Description : info
	 * @date 2017年11月8日下午5:09:44
	 * @param request ：HttpServletRequest
	 * @param format ：自定义格式：xxx{}
	 * @param o ：自定义打印信息
	 */
	public void info(String id,HttpServletRequest request,String format,Object obj){
		logger.info("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息："+format, obj);
	}
	/**
	 * @Title: info
	 * @Description : info
	 * @date 2017年11月8日下午5:10:00
	 * @param request ：HttpServletRequest
	 * @param format ：自定义格式多个：xxx{},xxx{}……
	 * @param args ：自定义打印信息多个
	 */
	public void info(String id,HttpServletRequest request,String format,Object... args){
		logger.info("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息："+format, args);
	}
	
	/*------------------------- warn -------------------------*/
	/**
	 * @Title: warn
	 * @Description : warn
	 * @date 2017年11月8日下午5:10:28
	 * @param request ：HttpServletRequest
	 * @param msg ：日志信息
	 */
	public void warn(String id,HttpServletRequest request,String msg){
		logger.warn("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息：{}", msg);
	}
	/**
	 * @Title: warn
	 * @Description : warn
	 * @date 2017年11月8日下午5:10:53
	 * @param request ：HttpServletRequest
	 * @param obj ：日志信息对象
	 */
	public void warn(String id,HttpServletRequest request,Object obj) {
		logger.warn("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息：{}", JSON.toJSONString(obj));
	}
	/**
	 * @Title: warn
	 * @Description : warn
	 * @date 2017年11月8日下午5:11:15
	 * @param request ：HttpServletRequest
	 * @param msg ：日志信息
	 * @param t ：错误信息
	 */
	public void warn(String id,HttpServletRequest request,String msg,Throwable t){
		logger.warn("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息：{},异常信息：{}", msg, t);
	}
	/**
	 * @Title: warn
	 * @Description : warn
	 * @date 2017年11月8日下午5:11:32
	 * @param request ：HttpServletRequest
	 * @param format ：自定义格式：xxx{}
	 * @param o ：自定义打印信息
	 */
	public void warn(String id,HttpServletRequest request,String format,Object o){
		logger.warn("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息："+format, o);
	}
	/**
	 * @Title: warn
	 * @Description : warn
	 * @date 2017年11月8日下午5:11:49
	 * @param request ：HttpServletRequest
	 * @param format ：自定义格式多个：xxx{},xxx{}……
	 * @param args ：自定义打印信息多个
	 */
	public void warn(String id,HttpServletRequest request,String format,Object... args){
		logger.warn("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息："+format, args);
	}
	
	/*------------------------- error -------------------------*/
	/**
	 * @Title: error
	 * @Description : error
	 * @date 2017年11月8日下午5:12:07
	 * @param request ：HttpServletRequest
	 * @param msg ：日志信息
	 */
	public void error(String id,HttpServletRequest request,String msg){
		logger.error("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息：{}", msg);
	}
	/**
	 * @Title: error
	 * @Description : error
	 * @date 2017年11月8日下午5:12:27
	 * @param request ：HttpServletRequest
	 * @param obj ：日志信息对象
	 */
	public void error(String id,HttpServletRequest request, Object obj) {
		logger.error("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息：{}", JSON.toJSONString(obj));
	}
	/**
	 * @Title: error
	 * @Description : error
	 * @date 2017年11月8日下午5:21:43
	 * @param request ：HttpServletRequest
	 * @param msg ：日志信息
	 * @param t ：错误信息
	 */
	public void error(String id,HttpServletRequest request,String msg,Throwable t){
		logger.error("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息：{},异常信息：{}", msg, t);
	}
	/**
	 * @Title: error
	 * @Description : error
	 * @date 2017年11月8日下午5:21:59
	 * @param request ：HttpServletRequest
	 * @param format ：自定义格式：xxx{}
	 * @param o ：自定义打印信息
	 */
	public void error(String id,HttpServletRequest request,String format,Object o){
		logger.error("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息："+format, o);
	}
	/**
	 * @Title: error
	 * @Description : error
	 * @date 2017年11月8日下午5:22:14
	 * @param request ：HttpServletRequest
	 * @param format ：自定义格式多个：xxx{},xxx{}……
	 * @param args ：自定义打印信息多个
	 */
	public void error(String id,HttpServletRequest request,String format,Object... args){
		logger.error("编号:"+id+"本机ip:"+ZqLoggerUtil.getHostAddress()+",请求ip："+ZqLoggerUtil.getRemoteHost(request)+INTERCEPTOR_INFO+",方法名："+ZqLoggerUtil.getMethodName()+",行号："+ZqLoggerUtil.getLineNumber()+",日志信息："+format, args);
	}
}
